#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QSqlDatabase>
#include <QSqlQuery>

#include "imageuploadmanager.h"
#include "MySql.h"
#include "ImageRecognize.h"
#include <QLabel>
#include <QProgressBar>
#include "ImageDownloader.h"
#include "qiniuconfig.h"
#include "ImageRecognize.h"
#include <QMessageBox>
#include <QSqlQuery>
#include <QSqlError>
#include <QStatusBar>
#include <QStandardItemModel>
#include <QShortcut>
#include <QLabel>



QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

/**
 * @brief 主窗口类
 * 应用程序的主界面
 */
class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

    bool isImageFileName(const QString &fileName);

signals:

    void onButtonClicked();

    // 自定义信号，传递被点击的项和索引
    void itemClicked(QStandardItem *item, const QModelIndex &index);

private slots:
    /**
     * @brief 上传按钮点击事件处理
     */
    void on_uploadButton_clicked();

    /**
     * @brief 更新上传进度显示
     * @param percent 进度百分比
     */
    void updateUploadProgress(int percent);

    /**
     * @brief 处理上传完成事件
     * @param success 是否成功
     * @param message 消息内容
     */
    void handleUploadFinished(bool success, const QString &message);

    void on_recognizeButton_clicked();

    void on_queryButton_clicked();

    void clickimage();

    void showcontent(const QString & content);

    void showStarted();

    void showQuery(QStandardItemModel *table);



private:
    Ui::MainWindow *ui;
    ImageUploadManager *m_uploadManager;
    MySql *mysql;
    ImageRecognize *rec;
    QLabel *imageLabel;

    /**
     * @brief 初始化上传组件
     */

    void initializeUploader();
};
#endif // MAINWINDOW_H
